﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevComponents.DotNetBar;
using CDStore3Tiers;
using System.Linq;
using System.Data.Linq;

namespace CuaHangDiaNhac
{
	public partial class frmThongKe : DevComponents.DotNetBar.Metro.MetroForm
	{
		log4net.ILog log = log4net.LogManager.GetLogger("Thống kê");
		private StoreCDDataContext db;
		private DateTime bd;
		private DateTime kt;
		private bool valBD = false;
		private bool valKT = false;
		DataGridViewTextBoxColumn coMaHD;
		DataGridViewTextBoxColumn coND;
		DataGridViewTextBoxColumn coNgay;
		DataGridViewTextBoxColumn coTongTien;
        DataGridViewTextBoxColumn coNguoiLap;
        DataGridViewTextBoxColumn coTaiKhoan;
		private int _tienBan = 0, _tienNhap = 0, _phatsinh = 0, _doanhThu = 0;
		XuLyHoaDon xl = new XuLyHoaDon();
		public frmThongKe()
		{
			InitializeComponent();
			db = new StoreCDDataContext();
			db.Connection.ConnectionString = getConfig.getConnection();
		}

		private void frmThongKe_Load(object sender, EventArgs e)
		{
			db = new StoreCDDataContext();
			db.Connection.ConnectionString = getConfig.getConnection();
			dtBD.Enabled = valBD;
			dtKT.Enabled = valKT;
			log.Info(frmLogin.id + ": đã load lên form thống kê");
		}

		private void btnThongKe_Click(object sender, EventArgs e)
		{
			if (!valBD)
			{
				DevComponents.DotNetBar.MessageBoxEx.Show("Bạn chưa chọn thời gian!");
			}
			else if (valBD && !valKT)
			{
				bd = dtBD.Value;
				kt = dtBD.Value.AddDays(1);
				LoadDGV(bd, kt);
				log.Info(frmLogin.id + ": chọn chức năng xem thống kê từ ngày " + bd + " tới ngày " + kt);
			}
			else
			{
				bd = dtBD.Value;
				kt = dtKT.Value.AddDays(1);
				LoadDGV(bd, kt);
				log.Info(frmLogin.id + ": chọn chức năng xem thống kê từ ngày " + bd + " tới ngày " + kt);
			}
			TinhDoanhThu();
		}


        public void LoadDGV(DateTime bd, DateTime kt)
        {

            dgv.DataSource = null;

            coMaHD = new DataGridViewTextBoxColumn();
            coMaHD.DataPropertyName = "MaHDBH";
            coMaHD.HeaderText = "Mã hóa đơn";
            coMaHD.Name = "cnameMaHD";
            coMaHD.ReadOnly = true;
            dgv.Columns.Add(coMaHD);

            coND = new DataGridViewTextBoxColumn();
            coND.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
            coND.DataPropertyName = "NoiDungHD";
            coND.HeaderText = "Nội dung ";
            coND.Name = "cnameND";
            dgv.Columns.Add(coND);

            coNgay = new DataGridViewTextBoxColumn();
            coNgay.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
            coNgay.DataPropertyName = "NgayLapHD";
            coNgay.HeaderText = "Ngày lập ";
            coNgay.Name = "cnameNgay";
            dgv.Columns.Add(coNgay);

            coTongTien = new DataGridViewTextBoxColumn();
            coTongTien.DataPropertyName = "TongTien";
            coTongTien.HeaderText = "Tổng tiền ";
            coTongTien.Name = "cnameTongtien";
            dgv.Columns.Add(coTongTien);

            coNguoiLap = new DataGridViewTextBoxColumn();
            coNguoiLap.DataPropertyName = "NguoiLap";
            coNguoiLap.HeaderText = "Người lập";
            coNguoiLap.Name = "cnameNguoiLap";
            dgv.Columns.Add(coNguoiLap);


            coTaiKhoan = new DataGridViewTextBoxColumn();
            coTaiKhoan.DataPropertyName = "TaiKhoan";
            coTaiKhoan.HeaderText = "Tài khoản";
            coTaiKhoan.Name = "cnameTK";
            coTaiKhoan.Visible = false;
            dgv.Columns.Add(coTaiKhoan);

            dgv.DataSource = xl.LocDS(bd, kt);
        }

		private void cbBegin_CheckedChanged(object sender, EventArgs e)
		{
			valBD = !valBD;
			dtBD.Enabled = valBD;
		}

		private void cbEnd_CheckedChanged(object sender, EventArgs e)
		{
			valKT = !valKT;
			dtKT.Enabled = valKT;
		}

		public void TinhDoanhThu()
		{
			_tienNhap = 0;
			_tienBan = 0;
			_phatsinh = 0;
			_doanhThu = 0;
			int tien = 0;
			List<HoaDonBan> hd = xl.LocDS(bd, kt);
			foreach (DataGridViewRow r in dgv.Rows)
			{
				tien = Convert.ToInt32(r.Cells["cnameTongtien"].Value);
				_tienBan = _tienBan + tien;
				lblBan.Text = Tien(_tienBan) + " VNĐ";
			}
			_tienNhap = Convert.ToInt32(db.TongNhap(bd, kt));
			lblNhap.Text = Tien(_tienNhap) + " VNĐ";
			_phatsinh = Convert.ToInt32(db.TongPhatSinh(bd, kt));
			lbPhatsinh.Text = Tien(_phatsinh) + "VNĐ";
			if (_tienBan - _tienNhap - _phatsinh < 0)
			{
				lblDoanhThu.ForeColor = Color.Red;
			}
			else
			{

				lblDoanhThu.ForeColor = Color.DarkGreen;
			}
			lblDoanhThu.Text = Tien(_tienBan - _tienNhap - _phatsinh) + " VNĐ";

		}
		private string Tien(int soTien)
		{
			return String.Format("{0:0,0}", soTien);
		}

		private void btnBieuDo_Click(object sender, EventArgs e)
		{

			DateTime bd = DateTime.Now;
			DateTime kt = DateTime.Now;

			if (cbBegin.Checked && cbEnd.Checked)
			{
				bd = dtBD.Value;
				kt = dtKT.Value;
			}
			else
			{

				bd = kt = dtBD.Value;

			}

			Form1 fbieudo = new Form1(bd, kt);
			fbieudo.Show();

			log.Info(frmLogin.id + ": chọn chức năng xem biểu đồ thống kê từ ngày " + bd + " tới ngày " + kt);
		}
	}
}